package gspringboot

import (
	"log/slog"
	"strings"
)

// ========================= 日志级别枚举 =========================
type logLevelEnum string

const (
	debugLevel logLevelEnum = "debug"
	infoLevel  logLevelEnum = "info"
	warnLevel  logLevelEnum = "warn"
	errorLevel logLevelEnum = "error"
)

var logLevelEnumMap = map[logLevelEnum]slog.Level{
	debugLevel: slog.LevelDebug,
	infoLevel:  slog.LevelInfo,
	warnLevel:  slog.LevelWarn,
	errorLevel: slog.LevelError,
}

func (my logLevelEnum) is(level string) bool {
	return my == logLevelEnum(strings.ToLower(level))
}

func (my logLevelEnum) getSlogLevel() slog.Level {
	return logLevelEnumMap[my]
}

func getLogLevelEnum(level string) logLevelEnum {
	for enum := range logLevelEnumMap {
		if enum.is(level) {
			return enum
		}
	}
	// 默认日志级别：into
	return infoLevel
}

// BannerMode ============ Banner打印开关枚举 =========================
type BannerMode int

const (
	OFF BannerMode = iota // 关闭banner
	ON                    // 开启banner
)

func (my BannerMode) is(mode BannerMode) bool {
	return my == mode
}
